function [v,C]= Equilibrium_multiplicative_nouncert_fun(v_old,p,I,cdf_p,pdf_p,g_I,...
    beta,delta,lambda,sigma,V0,Np,N,maxit,tol,gamma,index_p_gamma,f)
e = 1;
error = 1;


while (e <= maxit) && (error > tol)
    fprintf('ITERATION=%d \n',e);
    [pi] = pi_fun(p,I,sigma,N,f);

    [W_match,C] = w_match_multiplicative_nouncert_fun(v_old,p,pdf_p,g_I,Np,N,cdf_p,gamma,index_p_gamma);
     
    V0_mat = V0.*ones(Np,N);
    v = pi + beta.*delta.*(V0_mat-v_old) + beta.*lambda.*W_match + beta.*v_old;

    vec_v_old = v_old(:,1);
    vec_v = v(:,1);
    
    for i = 2:N
        vec_v_old = [vec_v_old; v_old(:,i)];
        vec_v = [vec_v ; v(:,i)];
    end
    % convergence criterion excludes very low value of p where p/gamma is
    % outside the range of prices
    error = max(abs(vec_v_old-vec_v));
    v_old = v;
    e = e+1;
end


end